package org.example.Greedy_Algorithm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class Merging_interval {
    public static void main(String[] args) {
        //合并区间

        //以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。
        // 请你合并所有重叠的区间，并返回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间 。
//        int[][] intervals = {{1,3},{2,6},{8,10},{15,18}};
        int[][] intervals = {{1,4},{2,3}};
        int[][] merge = merge(intervals);
        System.out.println(Arrays.deepToString(merge));
    }
    public static int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] a, int[] b) {
                return Integer.compare(a[0],b[0]);
            }
        });
//        System.out.println(Arrays.deepToString(intervals));
        int temp = 0;
        ArrayList<int[]> list = new ArrayList<>();
        for (int i = 1; i < intervals.length; i++) {
            if(intervals[i][1]<=intervals[temp][1]) continue;
            if (intervals[i][0]<=intervals[temp][1] ){
                intervals[temp][1] = intervals[i][1];
            }else{
                list.add(intervals[temp]);
                temp = i;
            }
        }
        list.add(intervals[temp]);
        return list.toArray(new int[0][0]);
    }
}
